package com.hl.domain;

import java.math.BigDecimal;
import java.util.List;
import java.util.Date;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 优惠券对象 coupon
 * 
 * @author ruoyi
 * @date 2025-08-08
 */
public class Coupon extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private String id;

    /** 活动名称（如“818大促”） */
    private String activityName;

    /** 优惠券名称（如“满100减20”） */
    @Excel(name = "优惠券名称", readConverterExp = "如=“满100减20”")
    private String couponName;

    /** 类型：CASH-减免现金，DISCOUNT-打折 */
    @Excel(name = "类型：CASH-减免现金，DISCOUNT-打折")
    private String couponType;

    /** 发布店铺 */
    private String issuingStore;

    /** 面额（CASH存金额，DISCOUNT存折扣比例，如8折存80） */
    @Excel(name = "面额", readConverterExp = "C=ASH存金额，DISCOUNT存折扣比例，如8折存80")
    private BigDecimal amount;

    /** 活动类型：目前仅支持免费领取 */
    private String activityType;

    /** 店铺承担比例（0-100） */
    private String shopShareRatio;

    /** 发放总量（0表示不限量） */
    @Excel(name = "发放总量", readConverterExp = "0=表示不限量")
    private Long issueCount;

    /** 每人限领数量（0表示不限） */
    @Excel(name = "每人限领数量", readConverterExp = "0=表示不限")
    private Long takeLimit;

    /** 范围描述（补充说明） */
    private String scopeDesc;

    /** 消费门槛（满XX元可用） */
    @Excel(name = "消费门槛", readConverterExp = "满=XX元可用")
    private BigDecimal consumeThreshold;

    /** 有效期开始时间 */
    private Date startTime;

    /** 有效期结束时间 */
    private Date endTime;

    /** 使用范围：ALL-全品类，PRODUCT-指定商品，CATEGORY-部分分类 */
    private String scopeType;

    /** 状态：CREATED-未开始，ACTIVE-进行中，CLOSED-已关闭，EXPIRED-已过期 */
    @Excel(name = "状态：CREATED-未开始，ACTIVE-进行中，CLOSED-已关闭，EXPIRED-已过期")
    private String status;

    /** 逻辑删除 */
    private Integer isDeleted;

    public List<CouponProductList> getCouponProductLists() {
        return couponProductLists;
    }

    public void setCouponProductLists(List<CouponProductList> couponProductLists) {
        this.couponProductLists = couponProductLists;
    }

    /** 已领取数量 */
    @Excel(name = "已领取数量")
    private Long receivedCount;

    private List<CouponProductList> couponProductLists;

    /** 优惠券-商品关联（scope_type=PRODUCT时生效）信息 */
    private List<CouponProduct> couponProductList;

    public void setId(String id) 
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }

    public void setActivityName(String activityName) 
    {
        this.activityName = activityName;
    }

    public String getActivityName() 
    {
        return activityName;
    }

    public void setCouponName(String couponName) 
    {
        this.couponName = couponName;
    }

    public String getCouponName() 
    {
        return couponName;
    }

    public void setCouponType(String couponType) 
    {
        this.couponType = couponType;
    }

    public String getCouponType() 
    {
        return couponType;
    }

    public String getIssuingStore() {
        return issuingStore;
    }

    public void setIssuingStore(String issuingStore) {
        this.issuingStore = issuingStore;
    }

    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }

    public void setActivityType(String activityType) 
    {
        this.activityType = activityType;
    }

    public String getActivityType() 
    {
        return activityType;
    }

    public void setShopShareRatio(String shopShareRatio) 
    {
        this.shopShareRatio = shopShareRatio;
    }

    public String getShopShareRatio() 
    {
        return shopShareRatio;
    }

    public void setIssueCount(Long issueCount) 
    {
        this.issueCount = issueCount;
    }

    public Long getIssueCount() 
    {
        return issueCount;
    }

    public void setTakeLimit(Long takeLimit) 
    {
        this.takeLimit = takeLimit;
    }

    public Long getTakeLimit() 
    {
        return takeLimit;
    }

    public void setScopeDesc(String scopeDesc) 
    {
        this.scopeDesc = scopeDesc;
    }

    public String getScopeDesc() 
    {
        return scopeDesc;
    }

    public void setConsumeThreshold(BigDecimal consumeThreshold) 
    {
        this.consumeThreshold = consumeThreshold;
    }

    public BigDecimal getConsumeThreshold() 
    {
        return consumeThreshold;
    }

    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }

    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }

    public void setScopeType(String scopeType) 
    {
        this.scopeType = scopeType;
    }

    public String getScopeType() 
    {
        return scopeType;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setIsDeleted(Integer isDeleted) 
    {
        this.isDeleted = isDeleted;
    }

    public Integer getIsDeleted() 
    {
        return isDeleted;
    }

    public void setReceivedCount(Long receivedCount) 
    {
        this.receivedCount = receivedCount;
    }

    public Long getReceivedCount() 
    {
        return receivedCount;
    }

    public List<CouponProduct> getCouponProductList()
    {
        return couponProductList;
    }

    public void setCouponProductList(List<CouponProduct> couponProductList)
    {
        this.couponProductList = couponProductList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("activityName", getActivityName())
            .append("couponName", getCouponName())
            .append("couponType", getCouponType())
            .append("issuingStore", getIssuingStore())
            .append("amount", getAmount())
            .append("activityType", getActivityType())
            .append("shopShareRatio", getShopShareRatio())
            .append("issueCount", getIssueCount())
            .append("takeLimit", getTakeLimit())
            .append("scopeDesc", getScopeDesc())
            .append("consumeThreshold", getConsumeThreshold())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("scopeType", getScopeType())
            .append("status", getStatus())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("isDeleted", getIsDeleted())
            .append("receivedCount", getReceivedCount())
            .append("couponProductList", getCouponProductList())
            .toString();
    }
}
